package com.itheima.Utils;
import com.itheima.domain.Person;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;

public class Utils {

    public static int stuId = 0;//学员ID的初始值  后期可以改为从文件/数据库读取初始值
    public static int teaId = 0;//教师ID的初始值

    //通过生日计算年龄
    public static int birthdayToAge(String birthday) {

        //这个try..catch叫做是异常的处理,在后面会学习,现在直接idea生成就可以了
        //把字符串转成日期
        Date birthDate = null;
        try {
            birthDate = new SimpleDateFormat("yyyy-MM-dd").parse(birthday);
        } catch (ParseException e) {
            e.printStackTrace();
        }


        //获取当前系统时间
        //now代表的就是现在的时间2020年5月8日
        Calendar now = Calendar.getInstance();
        //如果出生日期大于当前时间，则抛出异常
        //birth代表的就是出生日期2010年09月09日
        Calendar birth = Calendar.getInstance();//获取当前日期的Calendar
        birth.setTime(birthDate);


        //2020          2021
        if (now.before(birth)) {//判断当前日期是否在生日日期之前(before()的参数必须是一个Calendar类型)
            return -1;//表示计算失败
        }

        //取出系统当前时间的年、月、日部分
        int yearNow = now.get(Calendar.YEAR);
        int monthNow = now.get(Calendar.MONTH);
        int day = now.get(Calendar.DAY_OF_MONTH);

        //取出出生日期的年、月、日部分
        int yearBirth = birth.get(Calendar.YEAR);
        int monthBirth = birth.get(Calendar.MONTH);
        int dayBirth = birth.get(Calendar.DAY_OF_MONTH);

        //当前年份与出生年份相减，初步计算年龄
        int age = yearNow - yearBirth;//2020-2010 = 9

        //当前月份与出生日期的月份相比，如果月份小于出生月份，则年龄上减1，表示不满多少周岁
        if (monthNow < monthBirth) { //05 < 09
            age--;
        }

        //如果月份相等，在比较日期，如果当前日，小于出生日，也减1，表示不满多少周岁
        //2010-05-10                   8 < 10
        if (monthNow == monthBirth && day < dayBirth) {//如果：当前月 = 生日月
            age--;
        }

        return age;

    }

    //打印ArrayList的方法//  <? extends Person>是以后学的
    //遍历集合打印集合中的所有信息
    public static void printPersonList(ArrayList<? extends Person> list) {

        System.out.println("************************************************************************************");
        System.out.println("编号\t\t姓名\t\t性别\t\t生日\t\t\t年龄\t\t描述");
        //遍历集合
        for (int i = 0; i < list.size(); i++) {
            //获取集合的每个元素
            Person p = list.get(i);
            System.out.println(p.getId() + "    \t\t" + p.getName() + "\t\t" + p.getSex() + "\t\t\t" + p.getBirthday() + "\t\t" + p.getAge() + "\t\t\t" + "我是一名" + p.getType() + "我要" + p.getWork());
        }
    }
}
